<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
</body>
</html>
<script>
/*异步编程有哪些？
    fs文件操作 node内置模块        require(:fs).readFile("./index.html",(err,data)=>{})         之前是回调函数解决
    数据库操作 
    ajax                         $.get("./serve",(data)=>{})
    定时器                        setTImeout(()=>{},2000)
*/
    //promise和async，await都是异步编程的一种解决方法
    //promise出现解决了传统callback函数回调地狱(黑洞回调)
    //支持链式.then  .then 实现火车回调不断的去

    //分别有三种状态一旦函数执行promise有了结果就无法改变 
    //即遇到复杂的业务逻辑promise需要不停的.then .then 语法显然不美观

    //async,await是基于promise实现的
    //它是基于Generator函数的一个语法糖，它拥有内置执行器，
    //它返回一个promise对象可以使异步代看着码像同步代码一样，更方便阅读理解
    //解决了 promise不停.then .then 


    // resolve()成功回调&reject()失败回调
    // .then(function(){})   成功走这步
    // .catch(function(){})  失败后走这步
    // throw"errr" 抛出异常(在哪里出错？) 后面的不走了
    // .race    竞速 只看第一个 成就ok 失败就err
    // .all     打包的对象都是resolve状态，则返回全部，如果存在失败则返回第一个失败的这个  all()体现位置的顺序    




     

     






















</script>